#!/usr/bin/env python
# -*-coding: utf-8 -*-
# Filename: agregar_comentarios_intervencion.py

##
# Módulos del sistema
# Parte gráfica
try:
    import pygtk
    pygtk.require("2.0")
    import gtk
    import gtk.glade
except ImportError, error:
    print error
    print "Necesitas la librería gráficas gtk+pygtk"

from datetime import datetime
##
# Módulos propios
try:
    from gui.msj_retroalimentacion import MensajeDeError, MensajeDeAdvertencia
    from gui.msj_retroalimentacion import MensajeDeNotificacion
    from lib.funciones_utiles import close, descripcion_valida
    from lib.database import Observacion
except ImportError, error:
    print error
    print "Error causado en agregar_comentarios_intervencion.py"

class AgregarComentariosIntervencion:
    def __init__(self, padre, intervencion):
        self.gladefile = "gui/ghhp.glade"
        self.wTree = gtk.glade.XML(self.gladefile, "AgregarComentariosIntervencion")
        self.padre = padre
        self.intervencion = intervencion
        self.window = self.wTree.get_widget("AgregarComentariosIntervencion")
        self.window.resize(400,300)
        self.un_dict = {"on_cancelbutton16_clicked": self.registrar_cambios,
                "on_okbutton17_clicked": self.close}
        self.wTree.signal_autoconnect(self.un_dict)
        self.usuario = self.padre.padre.usuario_logueado
        self.tengo_observacion = False
        self.observacion = None
        self.completar_datos()

    def completar_datos(self):
        """Pone la descripcion del problema y las observaciones anteriores"""
        # Descripcion del problema
        self.wTree.get_widget("textview18").get_buffer().set_text(
                self.intervencion.ticket.descripcion)
        # Observaciones anteriores
        texto = []
        observaciones = ''
        observacion_usuario = ''
        for observacion in self.intervencion.observaciones:
            if observacion.usuario.legajo == self.usuario.empleado.legajo:
                observacion_usuario = observacion.descripcion
            lista = ["Fecha: %s" % observacion.fecha.strftime("%d-%m-%Y  %H:%M"),
                    "Usuario: %s" % (observacion.usuario.apellido + " " +
                        observacion.usuario.nombre) ,
                    "Descripcion: %s" % observacion.descripcion]
            texto.append("\n".join(lista))
        for obs in texto:
            observaciones = "\n--------------\n".join(texto)
        self.wTree.get_widget("textview19").get_buffer().set_text(
                observaciones)
        # Si el usuario logueado tiene una observacion en esta intervencion, la
        # ponemos como texto predeterminado el el textview20
        self.wTree.get_widget("textview13").get_buffer().set_text(
                observacion_usuario)
    
    def registrar_cambios(self, widget):
        """Registra en la BD"""
        descripcion = descripcion_valida(self.wTree.get_widget("textview13"))
        if descripcion:
            # Registramos el comentario en la BD
            grupo = self.padre.padre.grupo_de_resolucion.grupo
            observacion = Observacion(descripcion = descripcion,
                grupo_de_resolucion = grupo.id,
                intervencion = self.intervencion.id,
                usuario = self.usuario.id,
                fecha = datetime.now())
            texto = "Comentario agregado con exito"
            msj = MensajeDeNotificacion(texto, self.window)
            msj.run()
            self.window.destroy()
        else:
            error = "El campo de descripcion no debe ser nulo"
            msj = MensajeDeError(error, self.window)
            msj.run()

    def close(self, widget):
        close(self.window)


